// pages/me/me.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    worksCount: 0, // 作品数量
    activeTab: 'all', // 当前选中的作品分类 all, style, text
    worksList: [], // 所有作品列表
    filteredWorks: [], // 过滤后的作品列表
    statusBarHeight: 20, // 默认值
    userInfo: { // 只保留头像信息
      avatarUrl: ''
    },
    allWorks: [],
    isLoggedIn: false, // 登录状态
    userUniqueId: '', // 用户唯一标识
    loginCount: 0, // 登录次数
    globalProcessing: false, // 全局处理状态
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 获取状态栏高度
    try {
      const systemInfo = wx.getSystemInfoSync();
      this.setData({
        statusBarHeight: systemInfo.statusBarHeight
      });
    } catch (e) {
      console.error('获取系统信息失败', e);
    }

    // 从本地存储加载用户信息 (只加载头像)
    const userInfo = wx.getStorageSync('userInfo') || {};
    this.setData({
      userInfo: {
        ...this.data.userInfo,
        avatarUrl: userInfo.avatarUrl || ''
      }
    });

    // 检查登录状态
    this.checkLoginStatus();
  },

  /**
   * 检查登录状态
   */
  checkLoginStatus() {
    const loginInfo = wx.getStorageSync('loginInfo');
    if (loginInfo && loginInfo.uniqueId) {
      this.setData({
        isLoggedIn: true,
        userUniqueId: loginInfo.uniqueId,
        loginCount: loginInfo.loginCount || 1
      });
    } else {
      // 用户未登录，不自动登录，等待用户手动选择
      this.setData({
        isLoggedIn: false,
        userUniqueId: '',
        loginCount: 0
      });
    }
  },

  /**
   * 退出登录
   */
  handleLogout() {
    wx.showModal({
      title: '确认退出',
      content: '确定要退出登录吗？',
      success: (res) => {
        if (res.confirm) {
          // 清除登录信息
          wx.removeStorageSync('loginInfo');

          this.setData({
            isLoggedIn: false,
            userUniqueId: '',
            loginCount: 0,
            allWorks: [],         // 清空所有作品
            filteredWorks: [],    // 清空过滤后的作品
            worksCount: 0         // 作品数量归零
          });

          wx.showToast({
            title: '已退出登录',
            icon: 'success',
            duration: 1500
          });
        }
      }
    });
  },

  /**
   * 登录状态变化回调
   */
  onLoginStatusChanged() {
    // 重新检查登录状态并更新页面
    this.checkLoginStatus();
    this.loadMyWorksFromCloud(); // 登录状态变化时也刷新作品
  },

  /**
   * 全局加载状态变化回调
   */
  onGlobalLoadingChanged() {
    const app = getApp();
    this.setData({
      globalProcessing: app.globalData.isGlobalProcessing
    });
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    // 确保恢复tabBar显示
    const app = getApp();
    app.hideGlobalLoading();

    this.checkLoginStatus();
    this.loadMyWorksFromCloud(); // 改为云端加载
  },

  /**
   * 从云数据库加载作品
   */
  loadMyWorksFromCloud() {
    const app = getApp();
    const userOpenId = app.getUserOpenId();
    if (!userOpenId) {
      this.setData({ allWorks: [], worksCount: 0 });
      return;
    }
    wx.cloud.database().collection('spawnWorkshop')
      .where({ userOpenId })
      .get()
      .then(res => {
        // 这里res.data是作品数组
        const works = res.data.map(item => ({
          ...item,
          image: item.path, // 直接用云存储fileID
          // 你可以根据type字段做进一步处理
        }));
        this.setData({
          allWorks: works,
          worksCount: works.length
        });
        this.filterWorks(this.data.activeTab);
      })
      .catch(err => {
        console.error('云端作品加载失败', err);
        this.setData({ allWorks: [], worksCount: 0 });
      });
  },

  /**
   * 切换作品分类
   */
  switchTab(e) {
    const tab = e.currentTarget.dataset.tab;
    this.setData({
      activeTab: tab
    });
    this.filterWorks(tab);
  },

  /**
   * 过滤作品列表
   */
  filterWorks(tab) {
    let filtered = [];
    if (tab === 'all') {
      filtered = this.data.allWorks;
    } else if (tab === 'style') {
      filtered = this.data.allWorks.filter(work => work.type === 'style_transfer');
    } else if (tab === 'text') {
      filtered = this.data.allWorks.filter(work => work.type === 'text_to_photo');
    } else if (tab === 'model3d') {
      filtered = this.data.allWorks.filter(work => work.type === 'photo_to_3d' || work.type === 'text_to_3d');
    }
    this.setData({
      filteredWorks: filtered
    });
  },

  /**
   * 用户点击头像按钮（用于微信小程序获取用户头像新接口）
   */
  onChooseAvatar(e) {
    const { avatarUrl } = e.detail;
    // 更新头像
    const userInfo = {
      ...this.data.userInfo,
      avatarUrl
    };
    this.setData({ userInfo });
    // 保存到本地存储 (只保存头像)
    wx.setStorageSync('userInfo', userInfo);
  },

  /**
   * 前往设置页面（如果需要）
   */
  goToSettings() {
    // console.log('前往设置页面');
    // wx.navigateTo({ url: '/pages/settings/settings' }); // 示例跳转
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    // 下拉刷新时重新加载作品
    this.loadMyWorksFromCloud();
    wx.stopPullDownRefresh();
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },

  switchPage(e) {
    const page = e.currentTarget.dataset.page;
    if (page === 'home') {
      wx.switchTab({
        url: '/pages/home/home'
      });
    }
  },

  /**
   * 手动登录
   */
  async handleLogin() {
    if (this.data.isLoggedIn) {
      wx.showToast({
        title: '您已登录',
        icon: 'none',
        duration: 1500
      });
      return;
    }

    // 直接执行登录，不弹选择弹窗
    const app = getApp();
    await app.autoLogin();

    // 登录成功后更新页面状态
    if (app.isLoggedIn()) {
      this.checkLoginStatus();
      this.loadMyWorksFromCloud(); // 登录成功后立即加载作品
    }
  },
})